package com.niuwa.p2p.service.protocol;

import java.util.List;
import java.util.Map;

import com.niuwa.p2p.core.mvc.entity.JsonResult;
import com.niuwa.p2p.core.mvc.entity.PageBean;
import com.niuwa.p2p.entity.nwfile.NWFile;
import com.niuwa.p2p.entity.productTemplate.ProductProtocol;
import com.niuwa.p2p.vo.protocol.ProductProtocolVo;

public interface IProtocolService {
	/**
	 * 查询符合条件的协议
	 * @param paramMap
	 * @return
	 */
	public PageBean<ProductProtocolVo> selectProtocolBySelective(Map<String, Object> paramMap);

	/**
	 * 删除协议
	 * @param paramMap
	 * @return
	 */
	public JsonResult deleteProtocolBySelective(Long protId,Long operator);
	
	/**
	 * 修改协议状态
	 * @param paramMap
	 * @return
	 
	public JsonResult updateProtoStatusBySelective(Map<String, Object> paramMap);
	*/
	
	/**
	 * 获取所有协议
	 * @return
	 */
	public List<ProductProtocolVo> selectAllProtocol();

	/**
	 * 根据协议名称获取符合的协议信息
	 * @param protName
	 * @return
	 */
	public List<ProductProtocolVo> selectProtocolVersionByName(String protName);
	
	/**
	 * 根据协议名称和版本号获取对应协议信息
	 * @param protName 协议名称
	 * @param mainVersion 主版本号
	 * @param minorVersion 小版本号
	 * @return
	 * @throws Exception
	 */
	public ProductProtocolVo  selectProtocolByNameAndVersion(ProductProtocolVo protocolVo);

	/**
	 * 添加 产品协议信息
	 * 
	 * @param productProtocol 产品协议信息
	 * @return 更新条数
	 * @throws 添加失败
	 *            
	 */
	int addProductProtocol(ProductProtocol productProtocol, List<String> protFileID, long operator) throws Exception;
	/**
	 *  取得所有产品协议名称
	 * 
	 * @return  取得所有产品协议名称
	 * @throws 添加失败
	 *            
	 */
	List<String> selectAllProtName();
	 
	
	
	/**
	 * 获取协议相关文件
	 * @return
	 * @throws Exception
	 */
	List<NWFile> selectProtFilesByProtId(long protId);
	
	/**
	 * 根据协议ID获取协议信息
	 * @param protId
	 * @return
	 */
	public ProductProtocolVo getProtocolByProtId(long protId);
	
	/**
	 * 获取符合类型的所有协议信息
	 * @return
	 * @throws Exception
	 */
	public List<ProductProtocolVo> getProtocolByType(String prodType);
}
